﻿using ReactiveUI;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Threading;

namespace WPF_Lightningchart_UI_Demo
{
    public class MainViewModel : ReactiveObject
    {

        public ObservableCollection<SensorData> SensorDataPoints { get; set; }

        private DispatcherTimer _timer;
        private Random _random;
        private int _timeCounter;

        public MainViewModel()
        {
            SensorDataPoints = new ObservableCollection<SensorData>();
            _random = new Random();
            _timeCounter = 1;

            // 初始化定时器
            _timer = new DispatcherTimer();
            _timer.Interval = TimeSpan.FromSeconds(1); // 每秒钟更新一次
            _timer.Tick += Timer_Tick;
            _timer.Start();
        }

        // 定时器的 Tick 事件处理，定期生成新的传感器数据
        private void Timer_Tick(object sender, EventArgs e)
        {
            // 每次增加一个新数据点，模拟新的频率和幅值
            double newFrequency = _timeCounter++; // 使用时间作为频率
            double newMagnitude = _random.Next(10, 100); // 模拟随机的幅值

            // 将新数据点添加到集合中
            SensorDataPoints.Add(new SensorData
            {
                Frequency = newFrequency,
                Magnitude = newMagnitude
            });

            // 如果需要控制显示的数据量，比如只保留最新的 50 个点，可以在这里删除旧的数据点
            if (SensorDataPoints.Count > 50)
            {
                SensorDataPoints.RemoveAt(0); // 删除最早的数据点
            }
        }
    }
}
